The entire Monas Code
CodeベースでMonasの全体を書いていく with chatGPT.icon
随時追加していく
前提情報
main.py
/sigunup
メソッド: POST
機能: 新しいRootノードを作成する
CryptTreeNodeを作成し、そのメタデータを暗号化してIPFSに追加し、関連するキーをクライアントに返す
CryptreeNode.create_nodeを実行している
/login
メソッド: POST
パラメータ: RootRequest(Root nodeのCIDと秘密鍵を含む)
機能: 与えられたCIDとキーを使用してRootnodeのメタデータをふぇっつし、キャッシュに格納する
CIDからデータを取得し、メタデータを復号化してキャッシュに保存する
CryptTreeNodeを使っていると思うけど、いまいち理解できず
/fetch
メソッド: POST
パラメータ: FetchDataRequest(フェッチしたいパスを含む)
機能: 指定されたパスのノードのメタデータを取得する
キャッシュを確認し、ノードのメタデータを復号化して返す
/upload
メソッド: POST
パラメータ: UploadRequest(新しいノードの名前、タイプ、親ノードのパス、データCIDを含む)
機能新しいノードを作成し、親ノードのメタデータを更新する
新しいノードを作成し、素のメタデータを暗号化してIPFSに追加し、親ノードのメタデータを更新する
CryptTreeNode.create_nodeを呼び出して実行している
/reencrypt
メソッド: POST
Todo
/share
メソッド: GET
Todo
/cacheclear
メソッド: GET
機能: キャッシュのクリア
Cryptree.py
CryptTreeNodeクラスの定義
__int__(self, metadata, Keydata, subfolder_key)
インスタンスが作成されるときに呼び出す
metadata
keydata
subfolder
create_node(cls, name, isDirectory, parent=None, file_cid=None)
(subfolder_key, backlink_key, data_key)を生成し、ノードのメタデータとキーデータを作成する
name
isDirectory
parent
file_cid
get_encrypted_metadata(self)
Nodeのメタデータを暗号化して返す
backlink_keyをsubfolder_keyで復号化する
data_keyをbacklink_keyで復号化する
メタデータをdata_keyで復号化する
subfolder_keyでbacklink_keyを復号化する理由は分かるが、backlink_keyでdata_keyを復号化する理由はなんだろ?
前者は下位層の取得のためだと思うけどYudai.icon
ってか親のノードのメタデータに下位層の鍵を持っている状態になっているってことなのかも?(確認する)Yudai.icon
add_node(self, cid, name, path, is_directory)
子ノードを追加する
cid
name
path
is_directory
cache.py
LRUCacheクラス
キャッシュから要素が削除される必要があるときにもっとも古い要素が削除されるアルゴリズム
CryptreeCache
CryptreeNodeインスタンスをキャッシュに保持する。LRUCacheを使用して主な動作を管理する
メモ
DIDとWallet addressによる制御の追加
share, reencryptの追加
それと、
そう、それとアップロードする時も子ノードを追加する度にメタデータが更新されるから、CIDが変わる⇒親も更新がルートノードまで行われる
これさ、親ノードの含まれて入るんよね。何で呼び出せるんだろ?って思ったんやけどワンちゃんキャッシュによって呼び出せている説ある
ただ恐らく同じIDでリロードしたら呼び出せないと思う(maybe...)Yudai.icon